import {
  addConverSation,
  getConversations,
} from "@/api/message"
//引入Cook
import {getId} from '@/utils/auth'
// 该组件 , 所需要的数据,都在这里

const getDefaultState = () => {
  return {
    //  当前登录用户的所有的会话
    conversation: [
      //  第一个会话
      // {
      //   id: '1',                  //会话 id
      //   fromid: '13123456781',    //会话创建者的账号
      //   toid: '13123456785',      //会话的所属者账号
      //   message: [                //会话的两个人的聊天记录
      //     {
      //       id: "13123456785",  //消息发送者
      //       acc: "13123456781", //消息接收者
      //       type: '0',          //消息, 类型 , 0代表 , 文本消息 , 1代表 , 图片消息 , 2代表视频消息 3 代表文件消息
      //       mes: "你好", //消息内容 , 图片的地址 . 视频的地址 . 文件的地址
      //       date: "1604470350750"
      //     },
      //     {
      //       id: "13123456781", //发送者
      //       acc: "13123456785", //接收者
      //       type: '1',           //图片消息
      //       mes: " http://192.168.2.122:8080/pmessage/27.jpg", //消息内容
      //       date: "1604470350750"
      //     },
      //   ]
      // }
    ],
    //表情消息
    expression: [
      '001.png', '002.png', '003.png', '004.png', '005.png', '006.png', '007.png', '008.png', '009.png', '010.png',
      '011.png', '012.png', '013.png', '014.png', '015.png', '016.png', '017.png', '018.png', '019.png', '020.png',
      '021.png', '022.png', '023.png', '024.png', '025.png', '026.png', '027.png', '028.png', '029.png', '030.png',
      '031.png', '032.png', '033.png', '034.png', '035.gif', '036.gif', '037.gif', '038.gif', '039.gif', '040.gif',
      '041.gif', '042.gif', '043.gif', '044.gif', '045.gif', '046.gif', '047.gif', '048.gif', '049.gif', '050.gif',
      '051.gif', '052.gif', '053.gif', '054.gif', '055.gif', '056.gif', '057.gif', '058.gif', '059.gif', '060.gif',
      '061.gif', '062.gif', '063.gif', '064.gif', '065.gif', '066.gif', '067.gif', '068.gif', '069.gif', '070.gif',
      '071.gif', '072.gif', '073.gif', '074.gif', '075.gif', '076.gif', '077.gif', '078.gif', '079.gif', '080.gif',
      '081.gif', '082.gif', '083.gif', '084.gif', '085.gif', '086.gif', '087.gif', '088.gif', '089.gif', '090.gif',
      '091.gif', '092.gif', '093.gif', '094.gif', '095.gif', '096.gif', '097.gif', '098.gif', '099.gif', '100.gif',
    ],
    //服务端的请求 表情消息的 url 地址
    ServerUrl: 'http://192.168.2.122:8080/faceMessage/',
    //  判断 , 是否是请求过
    isconveration: true,
  }
}
const state = getDefaultState()

const mutations = {
  //向Vue里面,  添加一个会话
  ADD_CONVER: (state, messageinfo) => {
    state.conversation.push({
      id: messageinfo.converid, //会话的id
      fromid: getId(),   //会话的组织者id;
      toid: messageinfo.id,
      message: []
    })
  },
  ADD_MESSAGE: (state, message) => {
    for (let i = 0; i < state.conversation.length; i++) {
      //寻找到指定的会话
      if (state.conversation[i].id == message.id) {
        //  把数控 ,.添加到会话里面
        state.conversation[i].message.push(message.me)
        return;
      }
    }
    console.log("没有保存进去");
  },

  // 向客户端保存一个会话,  以及对应的聊天消息
  ADD_CON: (state, conver) => {
    state.conversation.push({
      id: conver.id,
      fromid: conver.fromid,
      toid: conver.toid,
      message: conver.message
    });
  }
}
const actions = {

  //向 客户端 发送一个请求 , 获取,当前用户的所有的会话,  以及会话的聊天记录
  getConversations({commit}) {
    return new Promise((resolve, reject) => {

      if (state.isconveration) {
        // if (false) {
        //把数据 , 通过 , 请求 , 发送到服务器 , 进行保存
        getConversations().then(responce => {
          //把服务端 , 返回过来的会话 , 存放到客户端 , 进行保存(遍历会话 , 查询每一个会话)
          const {data} = responce;
          for (let i = 0; i < data.conver.length; i++) {
            //创建一个数组
            var umessage = [];
            var userme = data.conver[i].usermessages;
            //循环所有的消息 , 把消息 , 存放到一个数组里面
            for (let p = 0; p < userme.length; p++) {
              //  向数组中 , 添加一个元素
              console.log("存放消息");
              umessage.push({
                id: userme[p].messagefrom,  //消息的发送者
                acc: userme[p].messageto,   //消息的接受者
                type: userme[p].messagetype, //消息的类型
                mes: userme[p].messagecontent, //消息内容
                date: userme[p].messagetime //消息时间
              })
            }
            //  向vuex里面 , 保存一个对象
            commit('ADD_CON', {
              id: data.conver[i].id,
              fromid: data.conver[i].fromid,
              toid: data.conver[i].toid,
              message: umessage
            });
          }
          state.isconveration = false;
          resolve()
        }).catch(err => {
          reject(err);
        })
      } else {
        resolve()
      }
    })
  },
  // 向服务端  发送请求 , 创建一个会话 ,
  addConverSation({commit}, userInfo) {
    return new Promise((resolve, reject) => {
      //把数据 , 通过 , 请求 , 发送到服务器 , 进行保存
      addConverSation({id: userInfo}).then(() => {
        resolve()
      }).catch(err => {
        reject(err);
      })
    })
  },
  //向Vuex里面 , 添加一个会话
  addConver({commit}, messageInfo) {
    //向Vuex里面 , 添加一个会话
    commit('ADD_CONVER', messageInfo);
  },
//  向Vuex 里面指定的会话 , 添加一条消息
  addMessage({commit}, message) {
    commit('ADD_MESSAGE', message)
  }
}

export default {
  namespaced: true,
  state,
  mutations,
  actions
}
